#Boa:Dialog:Dialog1

import wx
import wx.grid
import utiles
import consultasBD

def create(parent):
    return Dialog1(parent)

[wxID_DIALOG1, wxID_DIALOG1BOTONACEPTAR, wxID_DIALOG1BOTONBUSCAR, 
 wxID_DIALOG1BOTONIMPRIMIR, wxID_DIALOG1BOTONLIMPIAR, wxID_DIALOG1BOTONSALIR, 
 wxID_DIALOG1CHECKBOX1, wxID_DIALOG1CHECKBOX2, wxID_DIALOG1CHECKBOX3, 
 wxID_DIALOG1COMBOANIO, wxID_DIALOG1COMBOESTACION, wxID_DIALOG1COMBOGRUPO, 
 wxID_DIALOG1GRID1, wxID_DIALOG1PANEL1, wxID_DIALOG1STATICTEXT1, 
 wxID_DIALOG1STATICTEXT2, wxID_DIALOG1STATICTEXT3, wxID_DIALOG1STATICTEXT4, 
 wxID_DIALOG1STATICTEXT5, wxID_DIALOG1STATICTEXT6, wxID_DIALOG1TEXTCTRL1, 
 wxID_DIALOG1TEXTCTRL2, wxID_DIALOG1TEXTCTRL3, 
] = [wx.NewId() for _init_ctrls in range(23)]

class Dialog1(wx.Dialog):
    def _init_ctrls(self, prnt):
        # generated method, don't edit
        wx.Dialog.__init__(self, id=wxID_DIALOG1, name='', parent=prnt,
              pos=wx.Point(64, 33), size=wx.Size(856, 543),
              style=wx.DEFAULT_DIALOG_STYLE,
              title='Articulos: consulta por Proveedor')
        self.SetClientSize(wx.Size(848, 516))

        self.panel1 = wx.Panel(id=wxID_DIALOG1PANEL1, name='panel1',
              parent=self, pos=wx.Point(0, 0), size=wx.Size(848, 552),
              style=wx.TAB_TRAVERSAL)

        self.staticText1 = wx.StaticText(id=wxID_DIALOG1STATICTEXT1,
              label='Cod. Proveedor', name='staticText1', parent=self.panel1,
              pos=wx.Point(8, 8), size=wx.Size(76, 13), style=0)

        self.staticText2 = wx.StaticText(id=wxID_DIALOG1STATICTEXT2,
              label='Nombre Proveedor', name='staticText2', parent=self.panel1,
              pos=wx.Point(88, 8), size=wx.Size(90, 13), style=0)

        self.staticText3 = wx.StaticText(id=wxID_DIALOG1STATICTEXT3,
              label='Estacion', name='staticText3', parent=self.panel1,
              pos=wx.Point(424, 8), size=wx.Size(40, 13), style=0)

        self.staticText4 = wx.StaticText(id=wxID_DIALOG1STATICTEXT4,
              label='Anio', name='staticText4', parent=self.panel1,
              pos=wx.Point(512, 8), size=wx.Size(21, 13), style=0)

        self.staticText6 = wx.StaticText(id=wxID_DIALOG1STATICTEXT6,
              label='Total productos', name='staticText6', parent=self.panel1,
              pos=wx.Point(280, 488), size=wx.Size(75, 13), style=0)

        self.staticText5 = wx.StaticText(id=wxID_DIALOG1STATICTEXT5,
              label='Grupo', name='staticText5', parent=self.panel1,
              pos=wx.Point(656, 8), size=wx.Size(29, 13), style=0)

        self.textCtrl1 = wx.TextCtrl(id=wxID_DIALOG1TEXTCTRL1, name='textCtrl1',
              parent=self.panel1, pos=wx.Point(8, 24), size=wx.Size(80, 21),
              style=0, value='')

        self.textCtrl2 = wx.TextCtrl(id=wxID_DIALOG1TEXTCTRL2, name='textCtrl2',
              parent=self.panel1, pos=wx.Point(88, 24), size=wx.Size(240, 21),
              style=0, value='')

        self.textCtrl3 = wx.TextCtrl(id=wxID_DIALOG1TEXTCTRL3, name='textCtrl3',
              parent=self.panel1, pos=wx.Point(360, 488), size=wx.Size(56, 21),
              style=0, value='')
        self.textCtrl3.SetEditable(False)

        self.botonBuscar = wx.Button(id=wxID_DIALOG1BOTONBUSCAR, label='Buscar',
              name='botonBuscar', parent=self.panel1, pos=wx.Point(336, 24),
              size=wx.Size(75, 22), style=0)
        self.botonBuscar.Bind(wx.EVT_BUTTON, self.OnBotonBuscar,
              id=wxID_DIALOG1BOTONBUSCAR)

        self.comboEstacion = wx.ComboBox(choices=["Verano", "Primavera",
              "Otono", "Invierno", "Lince-Vera", "Lince-Prim", "Lince-Oton",
              "Lince-Invi"], id=wxID_DIALOG1COMBOESTACION, name='comboEstacion',
              parent=self.panel1, pos=wx.Point(424, 24), size=wx.Size(88, 21),
              style=0, value='')
        self.comboEstacion.SetLabel('')

        self.comboAnio = wx.ComboBox(choices=[], id=wxID_DIALOG1COMBOANIO,
              name='comboAnio', parent=self.panel1, pos=wx.Point(512, 24),
              size=wx.Size(56, 21), style=0, value='')
        self.comboAnio.SetLabel('')

        self.comboGrupo = wx.ComboBox(choices=[], id=wxID_DIALOG1COMBOGRUPO,
              name='comboGrupo', parent=self.panel1, pos=wx.Point(656, 24),
              size=wx.Size(184, 21), style=0, value='')
        self.comboGrupo.SetLabel('')

        self.checkBox1 = wx.CheckBox(id=wxID_DIALOG1CHECKBOX1,
              label='Incluir productos con stock 0 (cero)', name='checkBox1',
              parent=self.panel1, pos=wx.Point(8, 464), size=wx.Size(200, 13),
              style=0)
        self.checkBox1.SetValue(False)

        self.checkBox2 = wx.CheckBox(id=wxID_DIALOG1CHECKBOX2,
              label='Incluir productos con stock negativos', name='checkBox2',
              parent=self.panel1, pos=wx.Point(8, 480), size=wx.Size(200, 13),
              style=0)
        self.checkBox2.SetValue(True)

        self.checkBox3 = wx.CheckBox(id=wxID_DIALOG1CHECKBOX3,
              label='Excluir stock > 0', name='checkBox3', parent=self.panel1,
              pos=wx.Point(8, 496), size=wx.Size(104, 13), style=0)
        self.checkBox3.SetValue(False)

        self.botonAceptar = wx.Button(id=wxID_DIALOG1BOTONACEPTAR,
              label='Aceptar', name='botonAceptar', parent=self.panel1,
              pos=wx.Point(440, 488), size=wx.Size(75, 22), style=0)
        self.botonAceptar.Bind(wx.EVT_BUTTON, self.OnBotonAceptar,
              id=wxID_DIALOG1BOTONACEPTAR)

        self.botonImprimir = wx.Button(id=wxID_DIALOG1BOTONIMPRIMIR,
              label='Imprimir', name='botonImprimir', parent=self.panel1,
              pos=wx.Point(520, 488), size=wx.Size(75, 22), style=0)
        self.botonImprimir.Bind(wx.EVT_BUTTON, self.OnBotonImprimir,
              id=wxID_DIALOG1BOTONIMPRIMIR)

        self.botonLimpiar = wx.Button(id=wxID_DIALOG1BOTONLIMPIAR,
              label='Limpiar', name='botonLimpiar', parent=self.panel1,
              pos=wx.Point(600, 488), size=wx.Size(75, 23), style=0)
        self.botonLimpiar.Bind(wx.EVT_BUTTON, self.OnBotonLimpiar,
              id=wxID_DIALOG1BOTONLIMPIAR)

        self.botonSalir = wx.Button(id=wxID_DIALOG1BOTONSALIR, label='Salir',
              name='botonSalir', parent=self.panel1, pos=wx.Point(765, 488),
              size=wx.Size(75, 23), style=0)
        self.botonSalir.Bind(wx.EVT_BUTTON, self.OnBotonSalir,
              id=wxID_DIALOG1BOTONSALIR)

        self.grid1 = wx.grid.Grid(id=wxID_DIALOG1GRID1, name='grid1',
              parent=self.panel1, pos=wx.Point(8, 56), size=wx.Size(832, 400),
              style=0)
        self.grid1.EnableEditing(False)

    def __init__(self, parent, codproveedor=""):
        self._init_ctrls(parent)
        self.codigointerno = codproveedor
        self.cargarCombos()
        self.crearGrillas()
        if self.codigointerno <> "":
            self.textCtrl1.SetLabel(str(self.codigointerno))
            self.OnBotonBuscar(None)
            self.comboEstacion.SetFocus()
        else:
            self.textCtrl1.SetFocus()
        
    def OnBotonSalir(self, event):
        self.Close()

    def crearGrillas(self):
        #columnas = ['P.T.C','Codigo\nSussan','Descripcion','Talle','Color','Stock','Stock\nParana','Stock\nSaska','Stock\nPeatonal']
        columnas = ['P.T.C','Codigo\nSussan','Descripcion','Proveedor','Talle','Color','Grupo','Estacion','Anio','Stock']
        self.grid1.CreateGrid(1,len(columnas))
        for i, col in enumerate(columnas): 
            self.grid1.SetColLabelValue(i, col)

        self.ajustarAnchoColumnas()
        self.grid1.SetSelectionMode(wx.grid.Grid.wxGridSelectRows)
        self.grid1.Refresh()
        
    def ajustarAnchoColumnas(self):
        for y in xrange(self.grid1.GetNumberCols()):
            self.grid1.AutoSizeColumn(y,True)

    def cargarCombos(self):
        anioActual = int(utiles.getfecha()[-4:])
        primerAnio = 2008
        for i in xrange(anioActual-primerAnio+1):
            aux = primerAnio + i
            self.comboAnio.Append(str(aux))
        
        sql = "SELECT idgrupo,nombregrupo FROM grupos WHERE 1 ORDER BY nombregrupo"
        resultados = consultasBD.ordenCruda(sql)
        for item in resultados:
            cadena = str(item[0])+" / "+item[1]
            self.comboGrupo.Append(cadena)
            
        self.comboEstacion.SetEditable(False)
        self.comboAnio.SetEditable(False)
        self.comboGrupo.SetEditable(False)

    def OnBotonBuscar(self, event):
        if self.textCtrl1.GetValue() != "":
            r1 = "SELECT nombre FROM proveedor "
            r2 = "WHERE idproveedor = '"+self.textCtrl1.GetValue()+"' "
            consultaSQL = r1+r2
            resultado = consultasBD.ordenCruda(consultaSQL)
            if resultado != ():
                nombre = resultado[0][0]
                self.textCtrl2.SetLabel(nombre)
                self.comboEstacion.SetFocus()
                return
            self.textCtrl1.SetLabel("")
        if self.textCtrl2.GetValue() != "":
            r1 = "SELECT idproveedor,nombre FROM proveedor "
            r2 = "WHERE nombre LIKE '%"+self.textCtrl2.GetValue()+"%' "
            consultaSQL = r1+r2
            resultado = consultasBD.ordenCruda(consultaSQL)
            if resultado != () and len(resultado)==1:
                idproveedor = resultado[0][0]
                nombre = resultado[0][1]
                self.textCtrl1.SetLabel(idproveedor)
                self.textCtrl2.SetLabel(nombre)
                self.comboEstacion.SetFocus()
                return
            self.textCtrl1.SetLabel("")
        import BuscaProveedor2
        ventana = BuscaProveedor2.Dialog1(self,self.textCtrl2.GetValue())
        try:
            ventana.ShowModal()
            eleccion = ventana.getSeleccion()
        finally:
            ventana.Destroy()
        if eleccion.split(" / ") != ['']:
            self.textCtrl1.SetValue(eleccion.split(" / ")[1])
            self.textCtrl2.SetValue(eleccion.split(" / ")[0])
            self.comboEstacion.SetFocus()

    def llenarGrilla(self,datos):
        #PTC,CodSussan,Descripcion,Talle,Color,Stock\nCentral,Stock\nParana,Stock\nSaska,Stock\nPeatonal
        i = 0
        #item = datos[0]
        for item in datos:
            ptc = item[0]
            codsussan = item[1]
            descripcion = item[2]
            descripcion = descripcion[:20]
            proveedor = item[3]
            alineacion = wx.ALIGN_CENTRE
            if self.textCtrl1.GetLabel()=="*" or self.textCtrl1.GetLabel()=="+":
                proveedor = proveedor[:10]
                alineacion = wx.ALIGN_LEFT
            talle = item[4]
            color = item[5]+"/"+item[6]
            grupo = item[7]+"/"+item[8]
            grupo = grupo[:20]
            stock = str(item[9])
            
            estacion = item[10]
            anio = item[11]
            
            if not self.checkBox1.GetValue() and item[9] == 0:
                continue

            if not self.checkBox2.GetValue() and item[9] < 0:
                continue

            if self.checkBox3.GetValue() and item[9] > 0:
                continue

            #if not self.cargaStock(ptc,i):
            #    continue

            self.grid1.SetCellValue(i,0,ptc)
            self.grid1.SetCellValue(i,1,codsussan)
            self.grid1.SetCellValue(i,2,descripcion)
            self.grid1.SetCellValue(i,3,proveedor)
            self.grid1.SetCellAlignment(i,3,alineacion,wx.ALIGN_CENTRE)
            self.grid1.SetCellValue(i,4,talle)
            self.grid1.SetCellValue(i,5,color)
            self.grid1.SetCellValue(i,6,grupo)
            self.grid1.SetCellValue(i,7,estacion)
            self.grid1.SetCellValue(i,8,anio)
            self.grid1.SetCellValue(i,9,stock)
            self.grid1.SetCellAlignment(i,9,wx.ALIGN_RIGHT,wx.ALIGN_CENTRE)

            i = i + 1
            self.grid1.AppendRows()

        print
        self.ajustarAnchoColumnas()

    def OnBotonLimpiar(self, event):
        self.grid1.ClearGrid()
        while self.grid1.GetNumberRows()>1:
            self.grid1.DeleteRows()
        self.textCtrl1.Enable(True)
        self.textCtrl2.Enable(True)
        self.textCtrl1.SetLabel("")
        self.textCtrl2.SetLabel("")
        self.textCtrl3.SetLabel("")
        self.botonAceptar.Enable(True)
        self.botonBuscar.Enable(True)
        self.botonImprimir.Enable(True)
        self.comboEstacion.Enable(True)
        self.comboEstacion.SetLabel("")
        self.comboAnio.Enable(True)
        self.comboAnio.SetLabel("")
        self.comboGrupo.Enable(True)
        self.comboGrupo.SetLabel("")
        self.checkBox1.Enable(True)
        self.checkBox1.SetValue(False)
        self.checkBox2.Enable(True)
        self.checkBox2.SetValue(True)
        self.checkBox3.Enable(True)
        self.textCtrl1.SetFocus()

    def OnBotonAceptar(self, event):

        def consultandoSQL(ejecutando):
            if not ejecutando:
                print "Procesando proveedor:",self.textCtrl2.GetLabel()
                sucursal = utiles.getSucursalActiva()
                idproveedor = self.textCtrl1.GetValue()
                condicion0 = " WHERE proveedor='"+idproveedor+"' "

                if self.comboEstacion.GetLabel() != "":
                    condicion0+= "AND estacion='"+self.comboEstacion.GetLabel()+"' "
                if self.comboAnio.GetLabel() != "":
                    condicion0+= "AND anio='"+self.comboAnio.GetLabel()+"' "
                if self.comboGrupo.GetLabel() != "":
                    aux = self.comboGrupo.GetLabel().split(" / ")[0]
                    condicion0+= "AND grupo='"+aux+"' "

                r01 = "SELECT DISTINCT p2.id as ptc,p1.codsussan,p1.descri as descripcion,p1.proveedor,p2.talle,p2.color,p3.nombre, \n"
                r02 = "                p1.grupo,p5.nombregrupo,p4.stock,p1.estacion,p1.anio \n"
                r03 = "FROM \n"
                r04 = "  (SELECT codsussan,descri,proveedor,estacion,anio,grupo \n"
                r05 = "   FROM productos "+condicion0+") AS p1, \n"
                r06 = "  producto_talle_color AS p2, \n"
                r07 = "  colores AS p3, \n"
                r08 = "  stock AS p4, \n"
                r09 = "  grupos AS p5 \n"
                r10 = "WHERE p2.codsussan=p1.codsussan AND \n"
                r11 = "      p3.idcolor=p2.color AND \n"
                r12 = "      p2.id=p4.ptc AND p1.grupo=p5.idgrupo AND \n"
                r13 = "      p4.sucursal='"+sucursal+"' \n"
                r14 = "ORDER BY p2.codsussan,p2.id \n"
                 
                consultaSQL = r01+r02+r03+r04+r05+r06+r07+r08+r09+r10+r11+r12+r13+r14

                tiempoInicio = utiles.getfechaTime()
                resultados = consultasBD.ordenCruda(consultaSQL)
                tiempoFinal = utiles.getfechaTime()
                print "Tiempo inicio ",tiempoInicio,
                print "Tiempo fin    ",tiempoFinal," => consulta SQL",
            else:
                if self.textCtrl1.GetLabel()=="*":
                    print "Procesando TODOS los proveedores"
                    sucursal = utiles.getSucursalActiva()
                    condicion0 = " WHERE "
                    marca = 0
                    if self.comboEstacion.GetLabel() != "":
                        condicion0+= " estacion='"+self.comboEstacion.GetLabel()+"' "
                        marca = 1
                    if self.comboAnio.GetLabel() != "":
                        if marca != 0: condicion0+= " AND "
                        condicion0+= " anio='"+self.comboAnio.GetLabel()+"' "
                        marca = 2
                    if self.comboGrupo.GetLabel() != "":
                        if marca != 0: condicion0+= " AND "
                        aux = self.comboGrupo.GetLabel().split(" / ")[0]
                        condicion0+= " grupo='"+aux+"' "

                    r01 = "SELECT p2.id as ptc,p1.codsussan,p1.descri,p6.nombre, \n"
                    r02 = "       p2.talle,p2.color,p4.nombre,p1.grupo,p5.nombregrupo, \n"
                    r03 = "       p3.stock,p1.estacion,p1.anio \n"
                    r04 = "FROM productos AS p1, \n"
                    r05 = "     producto_talle_color AS p2, \n"
                    r06 = "     colores AS p4, \n"
                    r07 = "     grupos AS p5, \n"
                    r08 = "     proveedor AS p6, \n"
                    r09 = "     stock AS p3 \n"
                    r10 = condicion0+" AND p2.codsussan=p1.codsussan AND p4.idcolor=p2.color AND p1.grupo=p5.idgrupo \n"
                    r11 = "AND p3.ptc=p2.id AND p3.sucursal='"+sucursal+"' AND p1.proveedor=p6.idproveedor \n"
                    r12 = "ORDER BY p1.proveedor,p1.codsussan,p2.id \n"
                    consultaSQL = r01+r02+r03+r04+r05+r06+r07+r08+r09+r10+r11+r12

                    tiempoInicio = utiles.getfechaTime()
                    resultados = consultasBD.ordenCruda(consultaSQL)
                    tiempoFinal = utiles.getfechaTime()
                    print "Tiempo inicio ",tiempoInicio,
                    print "Tiempo fin    ",tiempoFinal," => consulta SQL 1:",
                    print len(resultados)," registros",
                else:
                    print "Procesando TODOS los proveedores sin indicar estacion, anio ni grupo"
                    sucursal = utiles.getSucursalActiva()

                    r01 = "SELECT p2.id as ptc,p1.codsussan,p1.descri,p6.nombre, \n"
                    r02 = "       p2.talle,p2.color,p4.nombre,p1.grupo,p5.nombregrupo, \n"
                    r03 = "       p3.stock,p1.estacion,p1.anio \n"
                    r04 = "FROM productos AS p1, \n"
                    r05 = "     producto_talle_color AS p2, \n"
                    r06 = "     colores AS p4, \n"
                    r07 = "     grupos AS p5, \n"
                    r08 = "     proveedor AS p6, \n"
                    r09 = "     stock AS p3 \n"
                    r10 = "WHERE p2.codsussan=p1.codsussan AND p4.idcolor=p2.color "
                    r11 = "      AND p1.grupo=p5.idgrupo \n"
                    r12 = "      AND p3.ptc=p2.id AND p3.sucursal='"+sucursal+"' "
                    r13 = "      AND p1.proveedor=p6.idproveedor \n"
                    r14 = "ORDER BY p6.nombre,p1.estacion,p1.codsussan,p2.id,p1.grupo \n"
                    consultaSQL = r01+r02+r03+r04+r05+r06+r07+r08+r09+r10+r11+r12+r13+r14

                    tiempoInicio = utiles.getfechaTime()
                    resultados = consultasBD.ordenCruda(consultaSQL)
                    tiempoFinal = utiles.getfechaTime()
                    print "Tiempo inicio ",tiempoInicio,
                    print "Tiempo fin    ",tiempoFinal," => consulta SQL 1:",
                    print len(resultados)," registros",
                
            return resultados

        #inicio proceso
        self.OnBotonBuscar(None)
        if self.textCtrl1.GetValue()=="" and self.textCtrl1.GetLabel()<>"+":
            utiles.mensaje(None,"Debe seleccionar un Proveedor")
            self.textCtrl1.SetFocus()
            return
        
        if self.comboEstacion.GetLabel() == "" and \
           self.comboAnio.GetLabel() == "" and \
           self.comboGrupo.GetLabel() == "" and self.textCtrl1.GetLabel()<>"+":
               texto = "Debe seleccionar al menos un criterio:\n"
               texto+= "       => Estacion, Anio y/o Grupo"
               utiles.mensaje(None,texto)
               self.comboEstacion.SetFocus()
               return

        self.textCtrl1.Enable(False)
        self.textCtrl2.Enable(False)
        self.botonAceptar.Enable(False)
        self.botonBuscar.Enable(False)
        self.comboAnio.Enable(False)
        self.comboEstacion.Enable(False)
        self.comboGrupo.Enable(False)
        self.checkBox1.Enable(False)
        self.checkBox2.Enable(False)
        self.checkBox3.Enable(False)
        self.botonImprimir.SetFocus()

        ejecuta = False
        if self.textCtrl1.GetValue() == "*" or self.textCtrl1.GetLabel()=="+":
            self.textCtrl2.SetLabel("TODOS")
            texto = "ATENCION:\n"
            texto+= "Este proceso tardara varios minutos porque\n"
            texto+= "no ha especificado proveedor, se procesaran\n"
            texto+= "TODOS los proveedores\n\n"
            texto+= "Desea continuar?\n\n"
            texto+= "ACEPTAR = genera listado               CANCELAR = salir"

            import Dialog2
            confirma = Dialog2.Dialog2(self, texto)
            try:
                confirma.ShowModal()
                if confirma.getSeleccion():
                    ejecuta = True
                else:
                    self.OnBotonLimpiar(None)
                    return
            except:
                pass

        resultados = consultandoSQL(ejecuta)

        tiempoInicio = utiles.getfechaTime()
        import Mensaje_procesando
        dlg = Mensaje_procesando.Mensaje(None)
        dlg.Show()

        self.llenarGrilla(resultados)
        self.textCtrl3.SetLabel(str(self.grid1.GetNumberRows()-1))
        
        dlg.Destroy()
        tiempoFinal = utiles.getfechaTime()

        print "Tiempo inicio ",tiempoInicio,
        print "Tiempo fin    ",tiempoFinal," => llenado grilla"

    def OnBotonImprimir(self, event):
        print "Imprimiendo"
        f=open("c:\\erpsussan.doc\\reporte-BuscarArticuloPorProveedor.html","w")
        numeroPagina = 1
        nrosuc,nombresuc = utiles.datosSucursal()
        
        totalItemPorPagina = 38
        totalPaginas = int(self.textCtrl3.GetValue()) / totalItemPorPagina 
        totalPaginas+= 1

        def encabezadoPagina(texto):
            fecha = utiles.getfechaTime()
            estacion = self.comboEstacion.GetLabel()
            anio = self.comboAnio.GetLabel()
            grupo = self.comboGrupo.GetLabel()
            proveedor = self.textCtrl2.GetLabel()[:20]

            if estacion == "": estacion = "TODAS"
            if anio == "": anio = "TODOS"
            if grupo == "": grupo == "TODOS"
            
            a = '<table width="100%" cellspacing="0" border="0">\n'
            a+= '<tr>\n'
            a+= '<td valign="top" align="left" width="33%"><font size="0.1">'
            a+= 'SUSSAN BOUTIQUE Inventario<br>'+nombresuc+'</font></td>\n'
            a+= '<td valign="top" align="left" width="34%"><font size="0.1">'
            a+= 'Proveedor: '+proveedor+' Estaci&oacute;n: '+estacion+'<br>'
            a+= 'A&ntilde;o:'+anio+' Grupo: '+grupo+'</font></td>\n'
            a+= '<td valign="top" align="right" width="33%"><font size="0.1">'+fecha
            a+= '<br>P&aacute;gina '+str(numeroPagina)+' / '+str(totalPaginas)+'</font></td>\n'
            a+= '</tr>\n'
            a+= '</table></font>\n'
            a+= '<hr>\n'
            texto+= a
            return texto
        
        def encabezadoTabla(texto):
            a = '<table width="100%" cellspacing="1" border="0"> \n'
            a+= '<tr>\n'
            a+= '<td valign="top" align="left"><font size="0.1">orden</font></td>\n'
            a+= '<td valign="top" align="center"><font size="0.1">P.T.C.</font></td>\n'
            a+= '<td valign="top" align="center"><font size="0.1">Cod.<br>Sussan</font></td>\n'
            a+= '<td valign="top" align="left"><font size="0.1">DESCRIPCION</font></td>\n'
            a+= '<td valign="top" align="center"><font size="0.1">Proveedor</font></td>\n'
            a+= '<td valign="top" align="left"><font size="0.1">Talle</font></td>\n'
            a+= '<td valign="top" align="left"><font size="0.1">Color</font></td>\n'
            a+= '<td valign="top" align="left"><font size="0.1">Grupo</font></td>\n'
            a+= '<td valign="top" align="center"><font size="0.1">Estacion</font></td>\n'
            a+= '<td valign="top" align="center"><font size="0.1">A&ntilde;o</font></td>\n'
            a+= '<td valign="top" align="right"><font size="0.1">STOCK</font></td> \n'
            a+= '</tr>\n'
            a+= '<tr>\n'
            a+= '<td colspan="11"><hr></td>\n'
            a+= '</tr>\n'
            texto+= a
            return texto
        
        cadena = '<?xml version="1.0" encoding="utf-8" ?> \n'
        cadena+= '<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> \n'
        cadena+= '<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en"> \n'
        cadena+= '<head> \n'
        cadena+= '<meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> \n'
        cadena+= '<meta name="generator" content="Docutils 0.4.1: http://docutils.sourceforge.net/" /> \n'
        cadena+= '<title>Sussan Boutique</title> \n'
        cadena+= '</head> \n'
        cadena+= '<body> \n'

        cadena = encabezadoPagina(cadena)
        cadena = encabezadoTabla(cadena)
        f.write(cadena)
        
        renglon = 0
        for i in xrange(self.grid1.GetNumberRows()-1):
        #PTC,CodSussan,Descripcion,Talle,Color,Stock\nCentral,Stock\nParana,Stock\nSaska,Stock\nPeatonal
            ptc = self.grid1.GetCellValue(i,0)
            codsussan = self.grid1.GetCellValue(i,1)
            descripcion = self.grid1.GetCellValue(i,2)
            proveedor = self.grid1.GetCellValue(i,3)
            talle = self.grid1.GetCellValue(i,4)
            color = self.grid1.GetCellValue(i,5)
            grupo = self.grid1.GetCellValue(i,6)
            estacion = self.grid1.GetCellValue(i,7)
            anio = self.grid1.GetCellValue(i,8)
            stock = self.grid1.GetCellValue(i,9)
            alineacion = '"center"'
            if self.textCtrl1.GetLabel()=="*":
                alineacion = '"left"'
            
            orden = str(i+1)

            cadena = '<tr>\n'
            cadena+= '<td valign="center" align="center"><font size="0.1">'+orden+'</font></td> \n'
            cadena+= '<td valign="center" align="center">'+ptc+'</td> \n'
            cadena+= '<td valign="center" align="center">'+codsussan+'</td> \n'
            cadena+= '<td valign="center" align="left"><font size="0.1">'+descripcion+'</font></td> \n'
            cadena+= '<td valign="center" align='+alineacion+'><font size="0.1">'+proveedor+'</font></td> \n'
            cadena+= '<td valign="center" align="left"><font size="0.1">'+talle+'</font></td> \n'
            cadena+= '<td valign="center" align="left"><font size="0.1">'+color+'</font></td> \n'
            cadena+= '<td valign="center" align="left"><font size="0.1">'+grupo+'</font></td> \n'
            cadena+= '<td valign="center" align="center"><font size="0.1">'+estacion+'</font></td> \n'
            cadena+= '<td valign="center" align="center"><font size="0.1">'+anio+'</font></td> \n'
            cadena+= '<td valign="center" align="right">'+stock+'</td> \n'
            cadena+= '</tr>\n'
            try:
                f.write(cadena)
            except:
                print cadena
            
            renglon+= 1
            
            if renglon >= totalItemPorPagina :
                f.write("</table><!-- salto de pagina -->\n")
                f.write("<p STYLE='page-break-after: always;'></p>\n")
                renglon = 0
##                for i in xrange(numeroPagina):
##                    f.write("<br>\n")
                numeroPagina+= 1
                cadena = encabezadoPagina("")
                cadena = encabezadoTabla(cadena)
                f.write(cadena)
            
        cadena = '</table>\n'
        cadena+= '<br>Total &iacute;tems: '+str(self.grid1.GetNumberRows()-1)+'\n'
        cadena+= '<br>Total p&aacute;ginas: '+str(numeroPagina)+'\n'
        cadena+= '</body>\n</html>\n'
        f.write(cadena)
        f.close()

        self.botonImprimir.Enable(False)
        self.botonSalir.SetFocus()

        import os
        os.system("taskkill /IM firefox.exe /F")
        os.system("c:\\explorer.lnk c:\\erpsussan.doc\\reporte-BuscarArticuloPorProveedor.html")
